﻿namespace SKeeper.Domain.Repositories
{
    using System;
    using System.Linq;
    using System.Linq.Expressions;

    public interface IRepository<T> : IDisposable where T : class, IEntity
    {
        IQueryable<T> GetAll();

        T GetById(int id);

        bool Create(T entity);

        bool Update(T entity);

        bool Delete(T entity);

        int SaveChanges();

        IQueryable<T> GetIncluding(params Expression<Func<T, object>>[] include);
    }
}
